package gui.managedbeans;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;

import org.primefaces.model.chart.CartesianChartModel;
import org.primefaces.model.chart.ChartSeries;

import Exception.RelatorioVazioException;
import Fachada.Fachada;
import ModelRelatorio.RelatorioPorHora;
import ModelRelatorio.RelatorioPorMes;

@ManagedBean
public class GerencialBean implements Serializable{

	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private Date inicio;
	private Date fim;
	
	private Integer anopesquisado;
	
	private String maior;
	
	
	 private List<RelatorioPorMes> relatorios; 
	 
	 private List<RelatorioPorHora> relatoriosHora;
	 
	 
	 CartesianChartModel model = new CartesianChartModel();
	 
	 
	 
	 public void relatorioPorMes() {
			
		 ChartSeries dados = new ChartSeries();
		 
		 List<RelatorioPorMes> relatorios = new ArrayList<RelatorioPorMes>();
		 try {
			 
			relatorios = Fachada.getFachada().relatorioMovimentacaoPorMes(this.anopesquisado);
			
			
			for (RelatorioPorMes r : relatorios) {
				dados.set(r.getMesExtenso(),r.getQnt());
			}		
		 model.addSeries(dados);
		 } catch (RelatorioVazioException e) {
			 FacesContext.getCurrentInstance().addMessage("messages", new FacesMessage(FacesMessage.SEVERITY_INFO,e.getMessage(),null));
				
				e.printStackTrace();
		 }
	}
	 
	 
	public void relatorioPorHora(){
		ChartSeries dados = new ChartSeries();
		 
		 List<RelatorioPorHora> relatoriosHora = new ArrayList<RelatorioPorHora>();
		
			try {
				relatoriosHora = Fachada.getFachada().relatorioMovimentacaoPorHora(this.inicio, this.fim);
				for (RelatorioPorHora r : relatoriosHora) {
					dados.set(r.getHoraFormatada(),r.getQnt());
				}
				 model.addSeries(dados);
			} catch (RelatorioVazioException e) {
				 FacesContext.getCurrentInstance().addMessage("messages", new FacesMessage(FacesMessage.SEVERITY_INFO,e.getMessage(),null));
					
				e.printStackTrace();
			}
		
	}
	 
	 
	 
	 
	 


	public String getMaior() {
		return maior;
	}

	public void setMaior(String maior) {
		this.maior = maior;
	}

	public CartesianChartModel getModel() {
		return model;
	}


	public void setModel(CartesianChartModel model) {
		this.model = model;
	}


	public void setRelatorios(List<RelatorioPorMes> relatorios) {
		this.relatorios = relatorios;
	}
	 
	 public List<RelatorioPorMes> getRelatorios() {  
	        return relatorios;  
	    }  

	public Integer getAnopesquisado() {
		return anopesquisado;
	}


	public void setAnopesquisado(Integer anopesquisado) {
		this.anopesquisado = anopesquisado;
	}










	public Date getInicio() {
		return inicio;
	}










	public void setInicio(Date inicio) {
		this.inicio = inicio;
	}




	public Date getFim() {
		return fim;
	}

	public void setFim(Date fim) {
		this.fim = fim;
	}


	public List<RelatorioPorHora> getRelatoriosHora() {
		return relatoriosHora;
	}


	public void setRelatoriosHora(List<RelatorioPorHora> relatoriosHora) {
		this.relatoriosHora = relatoriosHora;
	}
	
	
	
	
	
}
